package com.example.pceb.Tencent;

import org.apache.commons.codec.digest.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class LiveAddressGenerator {

    // 推流域名（你自己的）
    private static final String PUSH_DOMAIN = "216233.push.tlivecloud.com";
    // 播放域名（腾讯云测试播放域名）
    private static final String PLAY_DOMAIN = "216233.liveplay.tencentcloud.com";
    // 推流防盗链 key（你提供的）
    private static final String PUSH_KEY = "cfb2173d880147a37b399629e3a8e5ca";
    // 推流地址有效时间（单位：秒），这里是 6 小时
    private static final int EXPIRE_DURATION = 3600 * 6;

    public static Map<String, String> generate(String streamName) {
        // 生成当前时间戳（秒级）
        long timestamp = System.currentTimeMillis() / 1000;

        // 生成推流地址过期时间
        long txTime = timestamp + EXPIRE_DURATION;
        String txTimeHex = Long.toHexString(txTime).toUpperCase();

        // 计算 txSecret（推流防盗链签名）
        String signStr = PUSH_KEY + streamName + txTimeHex;
        String txSecret = DigestUtils.md5Hex(signStr.getBytes(StandardCharsets.UTF_8));

        // 构建推流URL
        String pushUrl = String.format("rtmp://%s/live/%s?txSecret=%s&txTime=%s",
                PUSH_DOMAIN, streamName, txSecret, txTimeHex);

        // 构建播放URL
        String m3u8Url = String.format("https://%s/live/%s.m3u8", PLAY_DOMAIN, streamName);




        // 返回结果
        Map<String, String> result = new HashMap<>();
        result.put("pushUrl", pushUrl);
        result.put("playUrl", m3u8Url);
        result.put("streamName", streamName);
        result.put("txTime", txTimeHex);
        result.put("timestamp", String.valueOf(timestamp)); // 添加时间戳参数
        return result;
    }
}